#include "Interfaz.h"
#include "MiError.h"
using namespace std;

Interfaz::Interfaz(){
	Opciones=0;
}
Interfaz::~Interfaz(){}

void Interfaz::obtenerInfoU(){
	
		string nombre="";
		string direccion="";
		int telefono=0;
		system("cls");
		cout<<"Obteniendo Informacion de Universidad....."<<endl;
		cout<<"Ingrese el Nombre de la Universidad: ";
		cin.clear();
		getline(cin,nombre);
		system("cls");
		cout<<"Obteniendo Informacion de Universidad....."<<endl;
		cout<<"Ingrese la Direccion de la Universidad: ";
		cin.clear();
		getline(cin,direccion);
		system("cls");
		cout<<"Obteniendo Informacion de Universidad....."<<endl;
		cout<<"Ingrese el Numero de Telefono: ";
		cin.clear();
		while(!(cin>>telefono)){
			try{
				cin>>telefono;
					throw MiError("Error...Por favor digite solo Numeros... ");
			}	
			catch(MiError & m){
				cout<<m.what()<<endl;
				cout<<"Ingrese el Numero de Telefono: "<<endl;;
				cin.clear();
				cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
			}
		}
		sis.agregarUniversidad(nombre,direccion,telefono);
		system("cls");
		cout<<"Se ha agregado la Universidad con exito...."<<endl;
		system("pause");

}

void Interfaz::modificarUniversidad(){
	string direccion="";
	int telefono=0;
	system("cls");
	cout<<"Modificando datos de la Universidad...."<<endl;
	cout<<"Ingrese la Direccion de la Universidad: ";
	cin.clear();
	cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
	getline(cin,direccion);
	system("cls");
	cout<<"Modificando datos de la Universidad...."<<endl;
	cout<<"Ingrese el Numero de Telefono: ";
	cin.clear();
	while(!(cin>>telefono)){
			try{
				cin>>telefono;
					throw MiError("Error...Por favor digite solo Numeros... ");
			}	
			catch(MiError & m){
				cout<<m.what()<<endl;
				cout<<"Ingrese el Numero de Telefono: "<<endl;;
				cin.clear();
				cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
			}
		}
	sis.modificarDatosU(direccion,telefono);
	system("cls");
	cout<<"Se ha modificado los Datos de la Universidad con Exito....."<<endl;
	system("pause");
}

void Interfaz::obtenerInfoAgregarDep(){
	string nombre="";
	system("cls");
	cout<<"Obteniendo Informacion de Departamento...."<<endl;
	cout<<"Ingrese el Nombre del Departamento: ";
	cin.clear();
	cin.ignore();
	getline(cin,nombre);
	sis.agregarDepartamento(nombre);
	system("cls");
	cout<<"Se ha agregado el Departamento con Exito...."<<endl;
	system("pause");
}

void Interfaz::obtenerInfoCurso(){
	if(!(sis.getU()->getDepartamentos()->listaVacia())){
		string depart="";
		string curso="";
		string sigla="";
		int creditos=0;
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,depart);
		Departamento* dep1=sis.obtenerDepartamento(depart);
		if(dep1==NULL){
			cout<<"Error....No existe el Departamento que ud Ingreso...."<<endl;
			system("pause");
		}
		else{
			system("cls");
			cout<<"Departamento: "<<dep1->getNombre()<<endl;
			cout<<"Ingrese el Nombre del curso: ";
			cin.clear();
			getline(cin,curso);
			system("cls");
			cout<<"Departamento: "<<dep1->getNombre()<<endl;
			cout<<"Ingrese las Siglas del curso: ";
			cin.clear();
			getline(cin,sigla);
			system("cls");
			cout<<"Departamento: "<<dep1->getNombre()<<endl;
			cout<<"Ingrese los creditos del curso: ";
			cin.clear();
			while(!(cin>>creditos)){
				try{
					cin>>creditos;
						throw MiError("Error...Por favor digite solo Numeros... ");
				}	
				catch(MiError & m){
					cout<<m.what()<<endl;
					cout<<"Ingrese los creditos del curso: "<<endl;;
					cin.clear();
					cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
				}
			}
			sis.agregarCurso(curso,sigla,creditos,dep1);
			dep1->getCursos()->IncrementarLongitud();	
			cout<<"Se ha agregado el Curso con exito...."<<endl;
			system("pause");
		}
	}
	else{
		cout<<"No hay Departamentos registrados...."<<endl;
		system("pause");
	}
}

void Interfaz::obtenerMostrarCursosDep(){
	if(!(sis.getU()->getDepartamentos()->listaVacia())){
		string depart="";
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,depart);
		Departamento* dep1=sis.obtenerDepartamento(depart);
		if(dep1==NULL){
			cout<<"Error....No existe el Departamento que ud Ingreso...."<<endl;
			system("pause");
		}
		else{
			system("cls");
			sis.mostrarCursos(dep1);
			system("pause");
		}
	}
	else{
		cout<<"No hay Departamentos registrados...."<<endl;
		system("pause");
	}
}

void Interfaz::obtenerMostrarCursos(){

	if(!(sis.getU()->getDepartamentos()->listaVacia())){
		Nodo<Departamento>*aux1=sis.getU()->getDepartamentos()->getDummy();
		cout<<"Mostrando Departamentos:..."<<endl;
		while(!aux1==NULL){
			cout<<"----------------------------------------------------------"<<endl;
			cout<<"Departamento: "<<endl;
			cout<<aux1->getInfo()->toString()<<" = "<<sis.getU()->getNombre()<<endl;
			sis.mostrarCursos(aux1->getInfo());
			cout<<endl;
			cout<<"----------------------------------------------------------"<<endl;
			cout<<"----------------------------------------------------------"<<endl;
			cout<<endl;
			aux1=aux1->getNext();
		}
		cout<<"----------------------------------------------------------"<<endl;	
	}
	else{
		cout<<"No hay ningun Departamento Registrado...."<<endl;
	}
}

void Interfaz::obtenerInfoModiCurso(){
	if(!(sis.getU()->getDepartamentos()->listaVacia())){
		string nombre, departamento, curso, sigla;
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,departamento);
		Departamento* dep1=sis.obtenerDepartamento(departamento);
		if(dep1==NULL){
			cout<<"Error.....No existe el departamento que ha ingresado...";
		
		}
		else{
			system("cls");
			if(!dep1->getCursos()->listaVacia()){
				sis.mostrarCursos(dep1);
				cout<<"Ingrese las siglas del Curso que desea modificar..... ";
				cin.clear();
				getline(cin,sigla);
				Curso* n1=sis.obtenerCurso(sigla,dep1);
				if(n1!=NULL){
					system("cls");
					cout<<"Modificando Datos del Curso: "<<n1->getSigla()<<endl;
					cout<<endl;
					cout<<"Ingrese el Nombre al que desea cambiar: ";
					cin.clear();
					getline(cin,nombre);
					sis.modificarDatosCurso(nombre,n1);
					cout<<endl<<"Se ha modificado Exitosamente....."<<endl;
				}
				else{
					system("cls");
					cout<<"Error.....No existe el Curso que usted ingreso"<<endl;
				}
				
			}
			else{
					system("cls");
					cout<<"Error.....El departamento seleccionado no tiene cursos registrados..."<<endl;
			}
		}

	}
	else{
		system("cls");
		cout<<"Error.... No existe ningn Departamento Registrado...."<<endl;
	}
}

void Interfaz::obtenerInfoEliminarCurso(){
	if(!(sis.getU()->getDepartamentos()->listaVacia())){
		string departamento,sigla;
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,departamento);
		Departamento* dep1=sis.obtenerDepartamento(departamento);
		if(dep1==NULL){
			cout<<"Error....No existe el Departamento que ud Ingreso...."<<endl;
		}
		else{
			system("cls");
			if(!dep1->getCursos()->listaVacia()){
				sis.mostrarCursos(dep1);
				cout<<"Ingrese las siglas del Curso que desea eliminar..... ";
				cin.clear();
				getline(cin,sigla);
				Curso* n1=sis.obtenerCurso(sigla,dep1);
				if(n1!=NULL){

									cout<<"a"<<endl;
									cout<<n1->toString()<<endl;
									system("pause");

					sis.eliminarCurso(n1,dep1);

									cout<<"b"<<endl;
									system("pause");

					system("cls");

									cout<<"c"<<endl;
									system("pause");

					cout<<"Se ha eliminado el Curso con Exito...."<<endl;

									cout<<"d"<<endl;
									system("pause");

				}
				else{
					system("cls");
					cout<<"Error.....No existe el Curso que usted ingreso"<<endl;
				}				
			}
			else{
				system("cls");
				cout<<"El Departamento Seleccionado no tiene Cursos registrados...."<<endl;
			}
		}
	}
	else{
		system("cls");
		cout<<"Error.... No existe ningn Departamento Registrado...."<<endl;
	}
}

void Interfaz::obtenerInfoAgregarProf(){
	string dep,nombre,ap1,ap2,id;
	if(sis.getU()->getDepartamentos()->listaVacia()){
		system("cls");
		cout<<"Error....No existen Departamentos registrados en la Universidad...."<<endl;
	}
	else{
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,dep);
		Departamento* dep1=sis.obtenerDepartamento(dep);
		if(dep1==NULL){
			cout<<endl;
			cout<<"Error....No Existe el Departamento que ud Ingreso...."<<endl;
		}
		else{
			system("cls");
			cout<<"Obteniendo Informacion del Profesor....."<<endl<<endl;
			cout<<"Ingrese el nombre del Profesor: ";
			cin.clear();
			getline(cin,nombre);
			cout<<endl;
			cout<<"Ingrese el Apellido-1 del Profesor: ";
			cin.clear();
			getline(cin,ap1);
			cout<<endl;
			cout<<"Ingrese el Apellido-2 del Profesor: ";
			cin.clear();
			getline(cin,ap2);
			cout<<endl;
			cout<<"Ingrese la Cedula del Profesor: ";
			cin.clear();
			getline(cin,id);
			sis.agregarProfesor(nombre,ap1,ap2,id,dep1);
			cout<<endl<<endl;
			cout<<"Se ha Agregado al Profesor con Exito...."<<endl;
		}
	}
}

void Interfaz::obtenerInfoModificarProf(){
	string nombre, ap1, ap2, id, dep;
	if(sis.getU()->getDepartamentos()->listaVacia()){
		system("cls");
		cout<<"Error....No existen Departamentos registrados en la Universidad...."<<endl;
	}
	else{
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,dep);
		Departamento* dep1=sis.obtenerDepartamento(dep);
		if(dep1==NULL){
			cout<<endl;
			cout<<"Error....No Existe el Departamento que ud Ingreso...."<<endl;
		}
		else{
			system("cls");
			cout<<"Ingrese la Cedula del profesor que desea modificar: ";
			cin.clear();
			getline(cin,id);
			Profesor* prof1=sis.obtenerProfesor(dep1,id);
			if(prof1==NULL){
				cout<<endl<<endl<<"No existe Profesor con la Cedula: "<<id<<endl;
			}
			else{
				system("cls");
				cout<<"Obteniendo Informacion del Profesor...."<<endl;
				cout<<endl;
				cout<<"Ingrese el Nombre del Profesor: ";
				cin.clear();
				getline(cin,nombre);
				cout<<"Ingrese el Apellido-1 del Profesor: ";
				cin.clear();
				getline(cin,ap1);
				cout<<"Ingrese el Apellido-2 del Profesor: ";
				cin.clear();
				getline(cin,ap2);
				sis.modificarProfesor(nombre,ap1,ap2,prof1);
				cout<<endl;
				cout<<"Se ha modificado el profesor con Exito...."<<endl;
			}
		}
	}

}

void Interfaz::infoMostrarProf(){
	string id, dep;
	if(sis.getU()->getDepartamentos()->listaVacia()){
		system("cls");
		cout<<"Error....No existen Departamentos registrados en la Universidad...."<<endl;
	}
	else{
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,dep);
		Departamento* dep1=sis.obtenerDepartamento(dep);
		if(dep1==NULL){
			cout<<endl<<"No existe Departamento Ingresado...."<<endl;
		}
		else{
			system("cls");
			cout<<"Ingrese la Cedula del profesor que desea mostrar: ";
			cin.clear();
			getline(cin,id);
			Profesor* prof1=sis.obtenerProfesor(dep1,id);
			if(prof1==NULL){
				cout<<endl<<endl<<"No existe Profesor con la Cedula: "<<id<<endl;
			}
			else{
				system("cls");
				cout<<"Mostrando Profesor....."<<endl;
				cout<<endl;
				sis.mostrarProfesorCedula(prof1);
			}
		}
	}
}

void Interfaz::infoMostrarProfXEscuela(){
	string id, dep;
	if(sis.getU()->getDepartamentos()->listaVacia()){
		system("cls");
		cout<<"Error....No existen Departamentos registrados en la Universidad...."<<endl;
	}
	else{
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,dep);
		Departamento* dep1=sis.obtenerDepartamento(dep);
		if(dep1==NULL){
			cout<<endl<<"No existe Departamento Ingresado...."<<endl;
		}
		else{
			system("cls");
			cout<<"Mostrando Profesores de la Escuela: "<<dep1->getNombre()<<endl;
			cout<<endl;
			sis.mostrarProfesorEscuela(dep1);
		}
	}
}

void Interfaz::infoAsignarCurso(){
	string id, dep, curso;
	if(sis.getU()->getDepartamentos()->listaVacia()){
		system("cls");
		cout<<"Error....No existen Departamentos registrados en la Universidad...."<<endl;
	}
	else{
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,dep);
		Departamento* dep1=sis.obtenerDepartamento(dep);
		if(dep1==NULL){
			cout<<endl<<"No existe Departamento Ingresado...."<<endl;
		}
		else{
			system("cls");
			cout<<"Ingrese la Cedula del profesor que desea Asignar un Curso: ";
			cin.clear();
			getline(cin,id);
			Profesor* prof1=sis.obtenerProfesor(dep1,id);
			if(prof1==NULL){
				cout<<endl<<endl<<"No existe Profesor con la Cedula: "<<id<<endl;
			}
			else{
				system("cls");
				sis.mostrarCursos(dep1);
				cout<<endl<<endl;
				cout<<"Ingrese la siglas del Curso que desee agregar: ";
				cin.clear();
				getline(cin,curso);
				Curso* AuxCur1=sis.obtenerCurso(curso,dep1);
				if(AuxCur1==NULL){
					cout<<endl<<endl<<"No Existe ningun Curso registrado con las Siglas: "<<curso<<endl;
				}
				else{
					sis.asignarCursoProf(AuxCur1,prof1);
					system("cls");
					cout<<"Se ha agregado el Curso: "<<curso<<" al Profesor: "<<prof1->getNombre()<<endl;
				}
			}
		}
	}
}

void Interfaz::infoConsultaCursoProf(){
	string id, dep;
	if(sis.getU()->getDepartamentos()->listaVacia()){
		system("cls");
		cout<<"Error....No existen Departamentos registrados en la Universidad...."<<endl;
	}
	else{
		system("cls");
		sis.mostrarDepartamentos();
		cout<<endl<<endl;
		cout<<"Ingrese el Nombre del Departamento que desea seleccionar: ";
		cin.clear();
		cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
		getline(cin,dep);
		Departamento* dep1=sis.obtenerDepartamento(dep);
		if(dep1==NULL){
			cout<<endl<<"No existe Departamento Ingresado...."<<endl;
		}
		else{
			system("cls");
			cout<<"Ingrese la Cedula del profesor que desea mostrar: ";
			cin.clear();
			getline(cin,id);
			Profesor* prof1=sis.obtenerProfesor(dep1,id);
			if(prof1==NULL){
				cout<<endl<<endl<<"No existe Profesor con la Cedula: "<<id<<endl;
			}
			else{
				system("cls");
				cout<<"Mostrando Lista de Curso del Prfo: "<<prof1->getNombre()<<endl<<endl;
				sis.consultaListaCursoDeProf(prof1);
			}
		}
	}
}	

void Interfaz::infoAgregarEstudiante(){
	string nombre,ape1,ape2,id,nacionalidad,carnet;
	system("cls");
	cout<<"Agregando Estudiante...."<<endl;
	cout<<"Ingrese el Nombre del Estudiante: ";
	cin.clear();
	cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
	getline(cin,nombre);
	system("cls");
	cout<<"Agregando Estudiante...."<<endl;
	cout<<"Ingrese el Apellido-1 del Estudiante: ";
	cin.clear();
	getline(cin,ape1);
	system("cls");
	cout<<"Agregando Estudiante...."<<endl;
	cout<<"Ingrese el Apellido-2 del Estudiante: ";
	cin.clear();
	getline(cin,ape2);
	system("cls");
	cout<<"Agregando Estudiante...."<<endl;
	cout<<"Ingrese la Cedula del estudiante: ";
	cin.clear();
	getline(cin,id);
	system("cls");
	cout<<"Agregando Estudiante...."<<endl;
	cout<<"Ingrese la Nacionalidad del estudiante: ";
	cin.clear();
	getline(cin,nacionalidad);
	system("cls");
	cout<<"Agregando Estudiante...."<<endl;
	cout<<"Ingrese el Carnet del Estudiante: ";
	cin.clear();
	getline(cin,carnet);
	Estudiante* est=new Estudiante(nombre,ape1,ape2,id,nacionalidad,carnet,0);
	sis.agregarEstudiante(est);
	system("cls");
	cout<<"Se ha agregado el Estudiante con exito......"<<endl;
}

void Interfaz::infoMatricularCurso(){
	string id, sigla, dep;
	system("cls");
	cout<<"Matricula de Cursos...."<<endl;
	cout<<"Ingrese el Carnet del Estudiante: ";
	cin.clear();
	cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
	getline(cin,id);
	Estudiante* T=sis.obtenerEstudiante(id);
	if(T==NULL){
		cout<<"Error no existe Estudiante con el carnet: "<<id;
	}
	else{
		system("cls");
		cout<<"Matricula de Cursos...."<<endl;
		cout<<"Mostrando Departamentos...."<<endl;
		cout<<"Ingrese el Departamento al que desea escoger Cursos: ";
		cin.clear();
		getline(cin,dep);
		Departamento* dep1=sis.obtenerDepartamento(dep);
		if(dep1==NULL){
			cout<<"Error no existe el Departamento q ud Ingreso...."<<endl;
		}
		else{
			system("cls");
			cout<<"Matricula de Cursos...."<<endl;
			cout<<"Mostrando Cursos....."<<endl;
			sis.mostrarCursos(dep1);
			cout<<endl<<endl;
			cout<<"Ingrese las siglas del Curso que desee matricular: ";
			cin.clear();
			getline(cin,sigla);
			Curso* cur1=sis.obtenerCurso(sigla,dep1);
			if(cur1==NULL){
				cout<<"Errorr...No existe Curso con las siglas: "<<sigla<<endl;
			}
			else{
				cout<<endl;
				T->agregarCurso(cur1);
				cout<<"Se ha agregado el Curso con exito....."<<endl;
			}

		}
	}
}

void Interfaz::menuPrincipal(){
	system("cls");
	cout<<"Menu Principal..."<<endl;
 	cout<<"--------------------"<<endl;
 	cout<<"1.Modificar la Informacion de la universidad"<<endl;
	cout<<"2.Mostrar los datos de la universidad"<<endl;
 	cout<<"3.Menu Departamento"<<endl;
 	cout<<"4.Menu Curso"<<endl;
 	cout<<"5.Menu Profeor"<<endl;
	cout<<"6.Menu Estudinte"<<endl;
	cout<<"7.Salir"<<endl;
  }

void Interfaz::MenuDepartamento(){
	system("cls");
	cout<<"Menu Departamentos....."<<endl;
 	cout<<"--------------------"<<endl;
 	cout<<"1.Agregar Departamentos"<<endl;
 	cout<<"2.Consulta"<<endl;
 	cout<<"3.Regresar"<<endl;
  }

void Interfaz::MenuCurso(){
	system("cls");
	cout<<"Menu Cursos....."<<endl;
 	cout<<"--------------------"<<endl;
 	cout<<"1.Agregar Curso"<<endl;
	cout<<"2.Eliminar Curso"<<endl;
 	cout<<"3.Modificar Curso"<<endl;
 	cout<<"4.Consulta Cursos por Departamento"<<endl;
	cout<<"5.Consulta todos los Cursos"<<endl;
 	cout<<"6.Regresar"<<endl;
  }

void Interfaz::MenuProfesor(){
	system("cls");
	cout<<"Menu Profesor....."<<endl;
 	cout<<"--------------------"<<endl;
 	cout<<"1.Agregar Profesor"<<endl;
	cout<<"2.Modificar Profesor"<<endl;
 	cout<<"3.Buscar Profesor"<<endl;
 	cout<<"4.Mostrar Profesor por Departamento"<<endl;
	cout<<"5.Asignar Curso a Profesor"<<endl;
	cout<<"6.Consultar Cursos de Profesor"<<endl;
 	cout<<"7.Regresar"<<endl;
  }

void Interfaz::MenuEstudiante(){
	system("cls");
	cout<<"Menu Estudiante....."<<endl;
 	cout<<"--------------------"<<endl;
 	cout<<"1.Agregar Estudiante"<<endl;
 	cout<<"2.Matricular Estudiante"<<endl;
 	cout<<"3.Consulta"<<endl;
 	cout<<"4.Regresar"<<endl;
  }

void Interfaz::manejoMenuPrincipal(){
    while(Opciones!=7){
		system("cls");
		menuPrincipal();
		switch(ValidarOpciones(Opciones)){
			case 1:
				system("cls");
				modificarUniversidad();
				break;
			case 2:
				system("cls");
				cout<<sis.getU()->toString()<<endl;;
				system("pause");
				break;
			case 3:
				system("cls");
				manejoMenuDepartamento();
				system("pause");
				break;
			case 4:
				system("cls");
				manejoMenuCurso();
				system("pause");
				break;
			case 5:
				system("cls");
				manejoMenuProfesor();
				system("pause");
				break;
			case 6:
				system("cls");
				manejoMenuEstudiante();
				system("pause");
				break;
			case 7:
				system("cls");
				cout<<"Gracias....!!!!!"<<endl;                         
				system("pause");
				Opciones=7;
				break;
			default:
				cout<<"Error......... "<<endl;
				system("pause");
				break;
		}
	}  
}

void Interfaz::manejoMenuDepartamento(){
	Opciones=0;
    while(Opciones!=3){
		system("cls");
		MenuDepartamento();
		switch(ValidarOpciones(Opciones)){
			case 1:
				system("cls");
				obtenerInfoAgregarDep();
				break;
			case 2:
				system("cls");
				sis.mostrarDepartamentos();
				system("pause");
				break;
			case 3:
				system("cls");
				cout<<"Volviendo al menu principal"<<endl;                         
				Opciones=3;
				break;
			default:
				cout<<"Error......... "<<endl;
				system("pause");
				break;
		}
	}  
}

void Interfaz::manejoMenuCurso(){
	Opciones=0;
	while(Opciones!=6){
		system("cls");
		MenuCurso();
		switch(ValidarOpciones(Opciones)){
			case 1:
				system("cls");
				obtenerInfoCurso();
				break;
			case 2:
				system("cls");
				obtenerInfoEliminarCurso();
				system("pause");
				break;
			case 3:
				system("cls");
				obtenerInfoModiCurso();
				system("pause");
				break;
			case 4:
				system("cls");
				obtenerMostrarCursosDep();
				break;
			case 5:
				system("cls");
				obtenerMostrarCursos();
				system("pause");
				break;
			case 6:
				system("cls");
				cout<<"Volviendo al menu principal"<<endl;                          
				Opciones=6;
				break;
			default:
				cout<<"Error......... "<<endl;
				system("pause");
				break;
		}
	} 
}

void Interfaz::manejoMenuProfesor(){
	Opciones=0;
	while(Opciones!=8){
		system("cls");
		MenuProfesor();
		switch(ValidarOpciones(Opciones)){
			case 1:
				system("cls");
				obtenerInfoAgregarProf();
				system("pause");
				break;
			case 2:
				system("cls");
				obtenerInfoModificarProf();
				system("pause");
				break;
			case 3:
				system("cls");
				infoMostrarProf();
				system("pause");
				break;
			case 4:
				system("cls");
				infoMostrarProfXEscuela();
				system("pause");
				break;
			case 5:
				system("cls");
				infoAsignarCurso();
				system("pause");
				break;
			case 6:
				system("cls");
				infoConsultaCursoProf();
				system("pause");
				break;
				
			case 7:
				system("cls");
				cout<<"Volviendo al menu principal"<<endl;                          
				system("pause");
				Opciones=8;
				break;
			default:
				cout<<"Error......... "<<endl;
				system("pause");
				break;
		}
	} 
}

void Interfaz::manejoMenuEstudiante(){
	Opciones=0;
	while(Opciones!=4){
		system("cls");
		MenuEstudiante();
		switch(ValidarOpciones(Opciones)){
			case 1:
				system("cls");
				infoAgregarEstudiante();
				system("pause");
				break;
			case 2:
				system("cls");
				infoMatricularCurso();
				system("pause");
				break;
			case 3:
				system("cls");
				//infoMatricularCurso();		Mostrar
				cout<<"ERROR 404 -- page not found"<<endl;
				system("pause");
				break;
			case 4:
				system("cls");
				cout<<"Volviendo al menu principal"<<endl;                          
				system("pause");
				Opciones=4;
				break;
			default:
				cout<<"Error......... "<<endl;
				system("pause");
				break;
		}
	} 
}


int Interfaz::ValidarOpciones(int x){
        cout<<"Ingrese el # de la Opcion a realizar....";
        while(!(cin>>x)){
                try{
				cin>>x;
					throw MiError("Error...Por favor digite solo Numeros... ");
			}	
			catch(MiError & m){
				cout<<m.what()<<endl;
				cout<<"Ingrese el # de la Opcion a realizar...."<<endl;;
				cin.clear();
				cin.ignore ( numeric_limits<streamsize>::max(), '\n' );
			}
        }
        return x;
}